package org.btik.light.server.platform.common.api.service;

import org.btik.light.server.platform.common.api.bean.common.StatusResult;
import org.btik.light.server.platform.common.api.bean.user.AddUserDto;
import org.btik.light.server.platform.common.api.bean.user.ModifyPasswordDto;
import org.btik.light.server.platform.common.api.bean.user.UpdateUserDto;
import org.btik.light.server.platform.common.api.bean.user.UserVo;
import org.btik.light.tool.DhUtil;

import java.util.Collection;

/**
 * @author lustre
 * @since 2023/6/12 17:55
 */
public interface UserService {
    Collection<UserVo> list();

    StatusResult<Void> addUser(AddUserDto addUserDto);

    StatusResult<Void> updateUser(UpdateUserDto updateUserDto, UserVo loginUser);

    StatusResult<Void> unlockUser(String account);

    StatusResult<Void> changeUserStatus(String account, boolean status);

    StatusResult<Void> deleteUser(String account);

    StatusResult<String> resetPassword(String account, String publicKey, DhUtil.DhKeyPair dhKeyPair);

    StatusResult<Void> modifyPassword(ModifyPasswordDto modifyPasswordDto, String account);
}
